Many people and organizations have come to rely heavily on electronic data. Consequently, many such people and organizations, as well as those they serve, have come to attach great importance to the information security of their electronic data. Many information security systems require that one or more cryptographically random number streams be provided for generating keys and other purposes. A stream of numbers is cryptographically random if at any point in the stream the history of prior numbers provides negligible assistance in predicting any subsequent number of the stream.
While cryptographically random number streams of numbers are conceptually simple, it has proved very difficult to generate such streams in an industrially useful fashion. For example, a stream of coin flips is cryptographically random, but coin flipping cannot be used to provide industrially useful number streams.
To get around the difficulty of generating cryptographically random number streams, one prior art approach involves providing a cryptographically random number as a seed to a pseudo random number stream. Such a seed can be obtained in many ways, a common one of which is sampling noise from a complex process that is very difficult to accurately model: for example, the thermal noise across a semiconductor diode or resistor. However, pseudo random number streams are algorithmic and thus predictable if the algorithm and seed are known. The effectiveness of this approach to information security is limited by its reliance upon such streams.
What is needed to provide greater security of electronic data is an industrially useful method and system for generating cryptographically random number streams. This disclosure provides such a method and system. These and other advantages, as well as additional inventive features, will be apparent from the present disclosure.